#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=2e5+1000;
typedef long long LL;
inline LL read(){LL x=0,f=1;char ch=getchar();	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
map<LL,LL>map1;
LL b[maxn];
int main(void){
   cin.tie(0);std::ios::sync_with_stdio(false);
   LL t;cin>>t;
   while(t--){
     map1.clear();
     LL n;cin>>n;
     n+=2;
     for(LL i=1;i<=n;i++) cin>>b[i];
     sort(b+1,b+1+n);
     LL sum=0;
     for(LL i=1;i<=n;i++){
         map1[b[i]]++;
         sum+=b[i];
     }
     bool flag=1;
     vector<LL>v;
     for(LL i=1;i<=n;i++){
        LL cnt=sum-b[i];
        map1[b[i]]--;
        if(cnt%2==0){
            LL temp=cnt/2;
            if(map1[temp]>0){
                for(LL k=1;k<=n;k++){
                    if(k==i) continue;
                    if(temp==b[k]){
                        temp=-0x3f3f3f3f;
                        continue;
                    }
                    v.push_back(b[k]);
                }
                flag=0;break;
            }
        }
        if(!flag) break;
        map1[b[i]]++;
     }
     if(flag){
        cout<<"-1"<<"\n";
     }
     else{
        for(auto i:v){
            cout<<i<<" ";
        }
        cout<<"\n";
     }
   }
   return 0;
}
